Hidden Waifus Hidden Waifus

Devlog 01: Hello Waifus

By Lily Linck
Markdown version
Banner

Hi!

There is a lot for me to talk, but to begin from the start: this new area on Hidden Waifus website is made to provide periodic updates on the current state of the game and keep my motivation high with the project.

Since the second demo a lot was done on the project silently, but the descriptions of Git commits are not a proper way to make the changes more visible.

Code Reworks

Following the spirit of Demo 2: Optimization Boogaloo, several reworks on the code were made to improve maintainability of the project and reduce repetitive tasks.

Overall those changes made a slight improvement in performance - almost 10MB less RAM usage with more content on the first level - but the best part is simplifying the project.

Resources

The most impacting of those reworks was in the very core of a Hidden Objects game: the very Waifus and Items to find. Instead of using Scenes for everything, now they are all Resources, lighter data-containers that load faster, give more control over behavior, improve code quality and simplify the project structure a lot!

Another area improved by Resources is the Progression code, with Levels, Challenges and their unlock Conditions all being converted to new custom Resources in the project. The simplification was great and expanding became easier, but this change resulted in one new problem on the backlog: the Randomizer is not yet updated to this new Progression code. :/

On the other hand, the Gallery was fully migrated to the new code and works very well with it. The inspector and Dialogs were also fully migrated. And the new code will also end up simplifying the Randomizer itself, now that every LevelObject (Waifus, Items, etc) follow a simpler structure.

All of those migrations to Resources removed a ton of now unneeded content from the Progression save-file, making it very easy to read.

Custom Nodes

Contrary to most games in this genre, Hidden Waifus approach is to avoid repeated content in the game - with one big exception: non-interactive scenario elements. This fundamentally limits the improvement done by our custom MultiSprite2D Node, but the difference of using a single Node to display several repeated element (like glasses on the Bar level) instead of a Sprite2D for each was still great on Demo 2 - and it was improved afterwards, making the code perform better.

Another helpful custom node is Polygon2DOutlined, that draws a polygon with an anti-aliased outline. This one screams that it should be a core functionality of the engine but is not, so I did my own implementation.

Animations

The custom animation code used on the Bar level was migrated to native Godot animation, saved as a text-based Resource on the project.

UI Rework (ongoing)

Colors

To make this project has it's own identity, instead of just being another generic game, me and OneLazyRobot planned a rework on the User Interface that is making every screen a lot more distinct.

Begining with the basic, he chose a vivid key-color to the game instead of everything being black and white: purple. The way it is being used on this project is with a pair a Palettes: one for the default Dark Theme and one for a Light theme.

WaifusPalette

The level preview in the Main Menu also got a more vivid color, along the rooms of a secret level that is being planned.

Fonts

Along with that, I changed some of the fonts used in the project to make the text prettier - and more readable in some parts. Now the main font is Delius, with Crafty Girls having a reduced role.

Speaking of fonts, Lorem Ipsum is not used in the project anymore, instead the only text drawn with it was replaced with a static image.

Flaemische Kanzleischrift was replaced with Dancing Script. Initially because the former does not allow use in commercial projects without authorization, but after the change both me and close friends find it better in the game.

Website - you are here :3

Along with the UI rework, I also made this website for the project and updated it to reflect the changes on the game.

The website was initially planned as a mere obligation asked by Game Stores (like GOG) on their checklist to submit a game to their platform, but after weeks writing articles on my personal website in parallel to a big change, one day a new idea came into my mind: what if I started writing articles on the development of Hidden Waifus? And here we are!

More optimization

Both performance and maintainability are being improved on the game, looking forward to have a lot of new content without becoming too heavy.

Illumination Rework

My main task during the last weeks, this was an evolving process until me and Lazy decided precisely how things will work on the game.

Since the game is fully 2D and Godot's dynamic Illumination system is simply overkill for this project, we will continue with our custom overlayed textures for Lights and Shadows.
But instead of simply mimicking what Godot does over CanvasTextures, with separate textures for light-shadow (normal map) and shines (specular map), we will combine light, shadows and shines on the same texture - eliminating one texture, per skin, per character. A small optimization that can stack greatly, both on the project (disk space) and runtime (VRAM).

Also, to make things simpler, each character skin will be have a company black and white .png file, containing it's Outline and illumination for each light direction (up, left, down, right).

File formats

To reduce file-size on images, we are adopting the webp format for all colored images. You might ask "why not use it for everything?", to which the answer is: because Godot!

The engine does not let you set the exact internal format you want to import an image into, so you will always be wasting VRAM with a heavier format (RGBA8) unless it can detect a lighter format from the image metadata - like it does for Black/White .png becoming Lum8 (1/4 the size) or LumAlpha8(1/2 the size). Why? Because the developers of the engine really think that people are too stupid to chose a format manually!

There is currently no way to bypass it without doing things by code, taking me away from working on the game to solve a problem of the engine - something I will not do unless I can monetize the hell out of the solution I end up creating. When the Godot asset store starts allowing monetization, I might create a custom import plugin that allows people to import images in any format they want to.

I also adopted the .woff2 format for fonts, which helps more the website with faster loading times.

Folder Structure

Following the migration of Waifus to Resources, I simplified the folder structure of their images to make browsing faster. A small improvement on maintainability, but a nice comfort when working on several skins in a single day.

Next steps

The is no estimated time for those next steps on the project, but they are my current goals.

Planned features and content

Both me and Lazy are working to bring new Waifus to the game, along with new Poses for them - to make their presence look more natural. Each of us has a list of 13 unique Waifus to bring to the game, along some NPCs and ... some surprises!

Along new Characters, be want to have a lot more things to find on the levels - and interactive scenario decorations, to make the world feel more alive.

A new feature that we discussed, to add replayability, is unlocking new things in levels as you progress in the game - giving an incentive for players to look again at areas they already visited before. This implementation will be limited in scope, to not overwhelm the player.

Outside of that, and a rework on the Randomizer, we are not planning a lot of new features to avoid Scope Creep on the project - that already is a lot more complex than initially planned.

Game Stores

Leading the changes to make the game more visually distinct, and making me study a lot on the past months, is the plan to release Hidden Waifus in Early Access on Game Stores.

Since most of the core functionality is already done, with few corrections pending, most of the future work on this project will be purely creating and implementing new content - a perfect stage to enter Early Access.

For now there are three stores in sight:

  • GOG
    The one I'm more focused to release the game, for being the most strict
  • Itch.io
    The one that might get a Web version of the game
  • Steam
    The biggest PC market-place

I would love to also publish the game on Flathub, one of the biggest app stores for Linux. But this will wait until they implement monetization.

If everything goes well, there is a certain milestone to be reached a little before having the game in any of said stores:

Demo 3

To release the next Demo of the project, there are some goals to be met:

  • Finish the Illumination Rework
  • Implement a sitting pose for every waifu already present in-game
  • Implement the "secret" level
    Totally not accessible by the Extras menu, as a badly kept secret :P
  • Finish the new content on Bar level existing areas
  • Implement basic mock-ups for every regular level

That was a lot for a single post, the next one will be quicker. So, until the next Devlog!

Return to top